/**
 * 背景设置
 */
export interface BackgroundSetting {

    /**
     * 背景类型
     */
    type: 'image' | 'video' | 'slide'

    /**
     * 图片背景设置
     */
    image?: ImageBackgroundSetting

    /**
     * 视频背景设置
     */
    video?: VideoBackgroundSetting

    /**
     * 遮罩设置
     */
    mask: MaskSetting

    /**
     * 背景特效
     */
    specialEffects: BackgroundSpecialEffect

}

export interface BackgroundSpecialEffect {

    /**
     * 模糊效果 单位像素
     */
    blur: number

}


/**
 * 本地背景设置
 */
export interface LocalBackgroundSetting extends BackgroundSetting {

    /**
     * 启用本地设置
     */
    enable: boolean

}


/**
 * 遮罩设置
 */
export interface MaskSetting {

    /**
     * 遮罩是否启用
     */
    enable: boolean

    /**
     * 遮罩颜色
     */
    color: string

    /**
     * 遮罩透明度
     */
    opacity: number

}


/**
 * 图片背景设置
 */
export interface ImageBackgroundSetting {

    /**
     * 图片 URI
     */
    uri: string

}

/**
 * 视频背景设置
 */
export interface VideoBackgroundSetting {

    /**
     * 视频 URI
     */
    uri: string

    /**
     * 视频播放速度
     */
    rate: number

    /**
     * 顶部裁剪
     */
    topCrop: number

    /**
     * 右侧裁剪
     */
    rightCrop: number,

    /**
     * 底部裁剪
     */
    bottomCrop: number

    /**
     * 左侧裁剪
     */
    leftCrop: number,

    /**
     * 顶部和底部裁剪是否相等
     */
    topAndBottomEqualCrop: boolean

    /**
     * 左部和右侧裁剪是否相等
     */
    leftAndRightEqualCrop: boolean

}

/**
 * 通用设置
 */
export interface GeneralSetting {

    /**
     * 拖拽
     */
    enableDrag: boolean

    /**
     * 显示新增按钮
     */
    showCreateBtn: boolean

    /**
     * 锁定布局: 禁止拖拽排序, 编辑, 删除. 不影响新增
     */
    lockLayout: boolean

}

/**
 * 新建背景设置
 */
export function newBackgroundSetting(): BackgroundSetting {
    return {
        type: 'image',
        image: {
            uri: '',
        },
        video: {
            uri: '',
            rate: 1,
            topCrop: 0,
            rightCrop: 0,
            bottomCrop: 0,
            leftCrop: 0,
            topAndBottomEqualCrop: true,
            leftAndRightEqualCrop: true,
        },
        mask: {
            enable: false,
            color: 'rgba(0, 0, 0, .5)',
            opacity: 0.5,
        },
        specialEffects: {
            blur: 0,
        },
    }
}

/**
 * 本地背景设置
 */
export function newLocalBackgroundSetting(): LocalBackgroundSetting {
    return {
        ...newBackgroundSetting(),
        enable: false,
    }
}

/**
 * 通用设置
 */
export function newGeneralSetting(): GeneralSetting {
    return {
        enableDrag: false,
        showCreateBtn: false,
        lockLayout: false,
    }
}
